package file;

import java.io.*;
import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-10-30
 * Time: 0:26
 */

public class Demo1 {


    public static void main2(String[] args) {
        // 针对文件是无法进行 list 的
//         File file = new File("./test.txt");
//         file.list();

         File file = new File("D:/java_warehoude");
        String[] ret = file.list();
        System.out.println(Arrays.toString(ret));

        File[] files = file.listFiles();
        System.out.println(Arrays.toString(files));
    }

    public static void main1(String[] args) throws InterruptedException {
        File file = new File("./test.txt");

        //在线程退出时删除文件
        file.deleteOnExit();
        Thread.sleep(1000*10);
    }

    public static void main3(String[] args) {

        File file = new File("./test1/111/222/");
        // mkdir 无法创建多级目录, 只能创建一级
//         boolean result = file.mkdir();

        boolean result = file.mkdirs();
        System.out.println(result);
    }


    public static void main4(String[] args) {
        // 重命名还能起到 "移动" 的作用
        File file = new File("./test.txt");
        File newFile = new File("./src/test.txt");
        boolean result = file.renameTo(newFile);

        System.out.println(result);
    }


    //字节流
    public static void main(String[] args) throws IOException {
        //第一种方式
        /*InputStream inputStream = null;

        try {
            inputStream = new FileInputStream("./test.txt");

        }finally {
            inputStream.close();
        }*/


        //第二种方式
        try (InputStream inputStream1 = new FileInputStream("./test.txt")){
            // 读文件操作.
            while (true){
                //一次读一个字节返回int
               /* int data = inputStream1.read();
                if (data == -1){
                    // 文件读完.
                    break;
                }
                System.out.printf("0x%d\n", data);*/


                // 一次读多个字节, 数组的长度, 自行定义.
                byte[] data = new byte[3];//缓冲区

                // 读操作, 就会尽可能把字节数组给填满.
                // 填不满的话, 能填几个就是几个!
                // 此处的 n 就表示实际读了几个字节.
                int n = inputStream1.read(data);
                System.out.println("n = " + n);

                if (n == -1){
                    // 文件读完.
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("0x%x\n",data[i]);
                }

            }
        }
    }
}
